Skip to content

[9주차/레오] 워크북 제출합니다#64

Open
yongyong213 wants to merge 3 commits into
UMC-Inha:leo/mainfrom
yongyong213:main
Open

[9주차/레오] 워크북 제출합니다#64
yongyong213 wants to merge 3 commits into
UMC-Inha:leo/mainfrom
yongyong213:main

Conversation

@yongyong213

@yongyong213 yongyong213 commented May 30, 2026

Copy link
Copy Markdown

✅ 실습 체크리스트

  • 이론 학습을 완료하셨나요?
  • 미션 요구사항을 모두 이해하셨나요?
  • 실습을 수행하기 위한 공부를 완료하셨나요?
  • 실습 요구사항을 모두 완료하셨나요?

✅ 컨벤션 체크리스트

  • 디렉토리 구조 컨벤션을 잘 지켰나요?
  • pr 제목을 컨벤션에 맞게 작성하였나요?
  • pr에 해당되는 이슈를 연결하였나요?(중요)
  • 적절한 라벨을 설정하였나요?
  • 파트장에게 code review를 요청하기 위해 reviewer를 등록하였나요?
  • 닉네임/main 브랜치의 최신 상태를 반영하고 있는지 확인했나요?(매우 중요!)

📌 주안점

카카오 로그인은 다 못해서 시험 끝나고 추가로 완료하겠습니다

@yongyong213 yongyong213 requested a review from YoungJJun May 30, 2026 09:58
@yongyong213 yongyong213 self-assigned this May 30, 2026
@yongyong213 yongyong213 linked an issue May 30, 2026 that may be closed by this pull request

@2u6in 2u6in left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

레오 9주차 너무 수고 많으셨습니다!!

return ApiResponse.onSuccess(MemberSuccessCode.JOIN_OK, result);
}

@PostMapping("/v1/login")

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

회원가입 url은 auth를 포함하는데 로그인 url에서는 auth를 안 쓰신 이유가 있나용??

OK(HttpStatus.OK, "MEMBER200_1", "성공적으로 유저를 조회했습니다."),

JOIN_OK(HttpStatus.OK, "MEMBER200_2", "성공적으로 가입을 완료했습니다.");
JOIN_OK(HttpStatus.OK, "MEMBER200_2", "성공적으로 가입을 완료했습니다."),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

회원 가입 할 때 OK보다는 회원이 생성되었으니까 CREATED를 사용하고 상태 코드도 201번이 더 알맞아 보입니다!

@Operation(summary = "마이페이지 조회")
public ApiResponse<MemberResDTO.GetInfo> getInfo(
@RequestBody MemberReqDTO.GetInfo dto
@AuthenticationPrincipal AuthMember member

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

jwt 토큰을 이용해서 마이페이지 조회하는 api 잘 짜신 것 같아요!

@YoungJJun YoungJJun left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

9주차 피드백

  1. 필수 미션 깔끔하게 잘 수행해주셨어요! 카카오 로그인은 선택미션이라 꼭 진행하지 않으셔도 됩니당.

    적어주신대로 시험 끝나고 만약에 진행하시면 프로젝트에서 관련 기능 맡으면 수월하긴 할 것 같네요!

  2. MemberService - signUp()

    List<Term> termList = request.agreedTerms().stream()
                    .map(termId -> termRepository.findById(termId)
                            .orElseThrow(() -> new TermException(TermErrorCode.TERM_NOT_FOUND)))

    필수 약관 검증 이후에 있는 코드인데 사용자가 요청한 termId에 대해서 하나하나 findById를 호출하는 구조입니다. 물론 약관의 개수가 일반적으로 엄청 많지는 않아서 크게 문제가 될까 싶지만 N+1 문제가 발생한다고 볼 수 있어요!

    termRepository.findAllById(request.agreedTerms()) 한번에 조회 후 이를 이용해서 검증하는 방향이 좋을 것 같아요.

  3. MemberReqDTO

    @NotBlank LocalDate birth

    NotBlank는 해당 타입에 동작하지 않아요. 간단하게 생각하면 NotBlank는 문자열에서만 동작한다고 생각하셔도 됩니다. 따라서@NotNull 로 수정하는게 좋을 것 같아요.

  4. MemberService - login()

    @Transactional() 붙어있는데 로그인 과정에서 DB Write 일어나지 않는 것 같아요. readOnly = true 붙여주면 좋을 것 같습니다.

  5. MemberService - signUp()

    회원생성, MemberFood 매핑 이후에 필수 약관을 검증하고 있어요.

    물론 필수약관 미동의로 예외발생해도 롤백되어서 문제는 없지만 결국 가입을 실패하는 경우인데 필요없는 로직이 선행됩니다.

    이메일 중복 검사 직후에 바로 약관 동의 여부를 검사하는 방향으로 수정하면 예외를 미리 발생시켜 불필요한 로직을 수행할 필요가 없어요.

    이를 Fail Fast 라고도 하는데 알아두시면 좋을 것 같아요! 현재는 연습용 프로젝트이니 수정은 꼭 하실 필요는 없습니다!

  6. MemberErrorCodeINVALID_PASSWORD

    비밀번호 불일치는 인증에 실패한 상황이라 BAD_REQUEST 라고 생각하실 수도 있을 것 같은데 UNAUTHORIZED가 적절해 보여요.


레오 이번주도 수고하셨습니다! 시험 잘보세용~ 🍎

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Chapter09_Spring Security - JWT, OAuth

3 participants